package view;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;

import language.Strings;
import model.OperacoesArquivos;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

import util.Constantes;
import util.MergesortString;
import util.Util;
import bean.PacoteF;

public class StartAvaliacao extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JScrollPane jScrollPaneList = null;
	private JList jList = null;
	private JLabel lbImagemZoom = null;
	private JLabel lbImagemPan1 = null;
	private JLabel lbImagemPan2 = null;
	private ChartPanel chartPanel = null;
	private JFreeChart jFreeChart = null;
	private XYSeriesCollection xyDataSet = null;  //  @jve:decl-index=0:
	private XYSeries series1 = null;  //  @jve:decl-index=0:
	private XYSeries series2 = null;  //  @jve:decl-index=0:
	private JLabel lbQtd = null;
	private ImagemAmpliada ampliada = null;
	private ImagemAmpliada graficoAmpliado = null;
	private JTabbedPane jTabbedPane = null;
//	private JLabel lbAcertos = null;
	private JLabel lbAcertosPercentMetro = null;
//	private JLabel lbErros = null;
	private JLabel lbErrosPercentMetro = null;
	private JRadioButton rbTodos = null;
	private JRadioButton rbT = null;
	private JRadioButton rbP = null;
	private JRadioButton rbM = null;
	private JRadioButton rbC = null;	
	private JRadioButton rbO = null;
	private JPopupMenu jPopupMenu = null;
	private JMenuItem jMenuItemCopiar = null;  //  @jve:decl-index=0:
	private JMenuItem jMenuItemColar = null;  //  @jve:decl-index=0:
	private JMenuItem jMenuItemRecortar = null;  //  @jve:decl-index=0:
	private JMenuItem jMenuItemSelecionar = null;
	private JMenuItem jMenuItemSalvarComo = null;
	private DefaultListModel model;
	private JTextField tfPesquisar = null;
	private JButton btRemoveInvalidos = null;
	private JButton btRemover = null;
	private JButton btRecarregar = null;
	private JButton btSalvar = null;
	private JButton btGeraEstatisticas = null;
	
	private boolean jPopMenuCopiar = false;
	private boolean jPopMenuColar = false;
	private boolean jPopMenuRecortar = false;
	private boolean jPopMenuSelecionar = false;
	private boolean jPopMenuSalvarComo = false;

	private static int CAMPO_SELECIONADO = 0;
	private static final int CAMPO_TF_PESQUISAR = 1;
	private static final int CAMPO_JLIST = 2;
	private static final int CAMPO_TA_ORIGINAL = 3;
	private static final int CAMPO_TA_NORMALIZADO = 4;	
	
	private JLabel lbMetrologico = null;
	private JLabel lbSaidaMetrologico = null;
	private JLabel lbRNA = null;
	private JLabel lbSaidaRNA = null;
	private JLabel lbReal = null;
	private JLabel lbAcertosPercentRNA = null;
	private JLabel lbErrosPercentRNA = null;
	private JLabel lbEstatisticasMetrologico = null;
	private JLabel lbEstatisticasRNA = null;
	private JComboBox cbSaidaReal = null;
	private JLabel lbDe = null;
	private JLabel lbItem = null;
	private JLabel lbItemCorrente = null;
	
	private DefaultListModel model_todos = null;
	private JLabel lbQtdAcertosMetro = null;
	private JLabel lbQtdErrosMetro = null;
	private JLabel lbQtdErrosRNA = null;
	private JLabel lbQtdAcertosRNA = null;
	private JPanel jPanelSaidas = null;
	private JPanel jPanelEstatisticas = null;
	private JButton btDetalhes = null;
	private JButton btMoverParaConsistencia = null;
	private JButton btVerDetalhesMetro = null;
	private JButton btVerDetalhesRNA = null;
	private JCheckBox chkIndeterminado = null;

	
	private List<String> listaAcertosMetro = null;
	private List<String> listaErrosMetro = null;
	private List<String> listaAcertosRNA = null;
	private List<String> listaErrosRNA = null;
	
	public StartAvaliacao() {
		super();
		initialize();
		
		carregaDadosIniciais();
	}

	private void initialize() {
		this.setSize(1050, 680);
		this.setContentPane(getJContentPane());
		this.setTitle(Strings.TEXT_BT_AVALIAR);
		this.setResizable(false);
		this.setDefaultCloseOperation(HIDE_ON_CLOSE);
		this.setLocation(
						((Toolkit.getDefaultToolkit().getScreenSize().width / 2) - (this
								.getWidth() / 2)),
						((Toolkit.getDefaultToolkit().getScreenSize().height / 2) - (this
								.getHeight() / 2)));
		this.addWindowListener(new WindowAdapter() {
			public void windowClosing (WindowEvent e) {
				Principal.JANELA_ABERTA = false;				
			}			
		});
		
		configuraFontesTF();
	}

	private JPanel getJContentPane() {
		if (jContentPane == null) {
			lbEstatisticasRNA = new JLabel();
			lbEstatisticasRNA.setText(Strings.TEXT_LABEL_REDE_NEURAL);
			lbEstatisticasRNA.setBounds(new Rectangle(345, 17, 163, 20));
			lbEstatisticasRNA.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 17));
			lbEstatisticasRNA.setHorizontalAlignment(SwingConstants.CENTER);
			lbEstatisticasMetrologico = new JLabel();
			lbEstatisticasMetrologico.setText(Strings.TEXT_LABEL_METRO);
			lbEstatisticasMetrologico.setBounds(new Rectangle(65, 17, 132, 20));
			lbEstatisticasMetrologico.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 17));
			lbEstatisticasMetrologico.setHorizontalAlignment(SwingConstants.CENTER);

//			lbErros = new JLabel();
//			lbErros.setText("Erros");
//			lbErros.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 17));
//			lbErros.setForeground(Color.RED);
//			lbErros.setBounds(new Rectangle(430, 17, 235, 25));
//			lbErros.setHorizontalAlignment(SwingConstants.CENTER);
//			lbAcertos = new JLabel();
//			lbAcertos.setText("Acertos");
//			lbAcertos.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 17));
//			lbAcertos.setForeground(new Color(50,205,50));
//			lbAcertos.setBounds(new Rectangle(171, 18, 235, 25));
//			lbAcertos.setHorizontalAlignment(SwingConstants.CENTER);
			
			lbQtdAcertosRNA = new JLabel();
			lbQtdAcertosRNA.setText("");
			lbQtdAcertosRNA.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 14));
			lbQtdAcertosRNA.setForeground(new Color(50,205,50));
			lbQtdAcertosRNA.setBounds(new Rectangle(294, 59, 110, 20));
			lbQtdAcertosRNA.setHorizontalAlignment(SwingConstants.CENTER);
			lbQtdErrosRNA = new JLabel();
			lbQtdErrosRNA.setText("");
			lbQtdErrosRNA.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 14));
			lbQtdErrosRNA.setForeground(Color.RED);
			lbQtdErrosRNA.setBounds(new Rectangle(415, 59, 110, 20));
			lbQtdErrosRNA.setHorizontalAlignment(SwingConstants.CENTER);
			lbQtdErrosMetro = new JLabel();
			lbQtdErrosMetro.setText("");
			lbQtdErrosMetro.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 14));
			lbQtdErrosMetro.setForeground(Color.RED);
			lbQtdErrosMetro.setBounds(new Rectangle(140, 59, 110, 20));
			lbQtdErrosMetro.setHorizontalAlignment(SwingConstants.CENTER);
			lbQtdAcertosMetro = new JLabel();
			lbQtdAcertosMetro.setText("");
			lbQtdAcertosMetro.setForeground(new Color(50,205,50));
			lbQtdAcertosMetro.setHorizontalAlignment(SwingConstants.CENTER);
			lbQtdAcertosMetro.setBounds(new Rectangle(15, 59, 110, 20));
			lbQtdAcertosMetro.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 14));		

			lbErrosPercentRNA = new JLabel();
			lbErrosPercentRNA.setText("");
			lbErrosPercentRNA.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 14));
			lbErrosPercentRNA.setForeground(Color.RED);
			lbErrosPercentRNA.setBounds(new Rectangle(415, 95, 110, 20));
			lbErrosPercentRNA.setHorizontalAlignment(SwingConstants.CENTER);
			lbAcertosPercentRNA = new JLabel();
			lbAcertosPercentRNA.setText("");
			lbAcertosPercentRNA.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 14));
			lbAcertosPercentRNA.setForeground(new Color(50,205,50));
			lbAcertosPercentRNA.setBounds(new Rectangle(294, 95, 110, 20));
			lbAcertosPercentRNA.setHorizontalAlignment(SwingConstants.CENTER);
			lbErrosPercentMetro = new JLabel();
			lbErrosPercentMetro.setText("");
			lbErrosPercentMetro.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 14));
			lbErrosPercentMetro.setForeground(Color.RED);
			lbErrosPercentMetro.setBounds(new Rectangle(140, 95, 110, 20));
			lbErrosPercentMetro.setHorizontalAlignment(SwingConstants.CENTER);
			lbAcertosPercentMetro = new JLabel();
			lbAcertosPercentMetro.setText("");
			lbAcertosPercentMetro.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 14));
			lbAcertosPercentMetro.setForeground(new Color(50,205,50));
			lbAcertosPercentMetro.setBounds(new Rectangle(15, 95, 110, 20));
			lbAcertosPercentMetro.setHorizontalAlignment(SwingConstants.CENTER);
			
			lbDe = new JLabel();
			lbDe.setBounds(new Rectangle(860, 470, 43, 15));
			lbDe.setText(Strings.TEXT_LABEL_DE.trim());
			lbDe.setHorizontalAlignment(SwingConstants.CENTER);
			lbItem = new JLabel();
			lbItem.setBounds(new Rectangle(705, 470, 54, 15));
			lbItem.setText(Strings.TEXT_LABEL_ITEM+":");
			lbItem.setHorizontalAlignment(SwingConstants.RIGHT);
			lbItemCorrente = new JLabel();
			lbItemCorrente.setBounds(new Rectangle(765, 470, 85, 15));
			lbItemCorrente.setText("");
			lbItemCorrente.setHorizontalAlignment(SwingConstants.CENTER);
			lbQtd = new JLabel();
			lbQtd.setBounds(new Rectangle(915, 470, 85, 15));
			lbQtd.setText("");
			lbQtd.setHorizontalAlignment(SwingConstants.CENTER);
			lbReal = new JLabel();
			lbReal.setText(Strings.TEXT_LABEL_REAL+":");
			lbReal.setBounds(new Rectangle(320, 30, 130, 20));
			lbSaidaRNA = new JLabel();
			lbSaidaRNA.setText("");
			lbSaidaRNA.setBounds(new Rectangle(165, 60, 43, 20));
			lbRNA = new JLabel();
			lbRNA.setText(Strings.TEXT_LABEL_REDE_NEURAL+":");
			lbRNA.setBounds(new Rectangle(165, 30, 130, 20));
			lbSaidaMetrologico = new JLabel();
			lbSaidaMetrologico.setText("");
			lbSaidaMetrologico.setBounds(new Rectangle(30, 60, 43, 20));
			lbMetrologico = new JLabel();
			lbMetrologico.setText(Strings.TEXT_LABEL_METRO+":");
			lbMetrologico.setBounds(new Rectangle(30, 30, 110, 20));
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getJScrollBarList(), null);
			jContentPane.add(getjTabbedPane(), null);
			jContentPane.add(getChartPanel(), null);
			jContentPane.setBackground(Color.WHITE);
			jContentPane.add(lbDe, null);
			jContentPane.add(lbQtd, null);
			jContentPane.add(getTfPesquisar(), null);
			jContentPane.add(getRbTodos(), null);
			jContentPane.add(getRbT(), null);
			jContentPane.add(getRbP(), null);
			jContentPane.add(getRbM(), null);
			jContentPane.add(getRbC(), null);
			jContentPane.add(getRbO(), null);
			jContentPane.add(lbItem, null);
			jContentPane.add(lbItemCorrente, null);
			jContentPane.add(getBtRemoveInvalidos(), null);
			jContentPane.add(getBtRemover(), null);
			jContentPane.add(getBtRecarregar(), null);
			jContentPane.add(getBtSalvar(), null);
			jContentPane.add(getBtGeraEstatisticas(), null);
			jContentPane.add(getJPanelSaidas(), null);
			jContentPane.add(getJPanelEstatisticas(), null);
			jContentPane.add(getBtDetalhes(), null);
			jContentPane.add(getBtMoverParaConsistencia(), null);
			jContentPane.add(getChkIndeterminado(), null);
			
			createButtonGroupSeleciona();
		}
		return jContentPane;
	}

	private ChartPanel getChartPanel(){
		if(chartPanel == null){
			chartPanel = new ChartPanel(getJFreeChart());
			chartPanel.setBounds(new Rectangle(360, 30, 320, 240));
			chartPanel.addMouseListener(new MouseListener() {
				@Override
				public void mouseClicked(MouseEvent e) {
					String nome = UtilitariosGUI.getNomeJList((String) getJList().getSelectedValue());
					
					if(graficoAmpliado == null){				
						graficoAmpliado = new ImagemAmpliada();
					}
					
					graficoAmpliado.setGrafico(nome, getJFreeChart());
					
					graficoAmpliado.setVisible(true);
					graficoAmpliado.setState(JFrame.NORMAL);
				}

				@Override
				public void mouseEntered(MouseEvent e) {
					
				}

				@Override
				public void mouseExited(MouseEvent e) {
					
				}

				@Override
				public void mousePressed(MouseEvent e) {
					
				}

				@Override
				public void mouseReleased(MouseEvent e) {
					
				}
				
			});
		}
		
		return chartPanel;
	}
	
	private JFreeChart getJFreeChart(){
		if(jFreeChart == null){
			jFreeChart = ChartFactory.createXYLineChart(
					Strings.TEXT_LABEL_PERFIL_MAG, Strings.TEXT_LABEL_TEMPO, Strings.TEXT_LABEL_VARIACAO_PERIODO, 
					getXYDataset(), PlotOrientation.VERTICAL, true, true, true);
			jFreeChart.setBorderVisible(true);
		}
		
		return jFreeChart;
	}
	
	private XYDataset getXYDataset() {
		if(xyDataSet  == null){
			xyDataSet = new XYSeriesCollection();
			xyDataSet.addSeries(getSeries1());
			xyDataSet.addSeries(getSeries2());
		}
		
		return xyDataSet;
	}

	private XYSeries getSeries1() {
		if (series1 == null) {
			series1 = new XYSeries(Strings.TEXT_LABEL_LACO1);
		}
		
		return series1;
	}

	private XYSeries getSeries2() {
		if (series2 == null) {
			series2 = new XYSeries(Strings.TEXT_LABEL_LACO2);
		}
		
		return series2;
	}


	private void configuraFontesTF(){
		Font font = new Font(Font.SANS_SERIF, Font.PLAIN, 11);
		
		lbImagemZoom.setFont(font);
		lbImagemPan1.setFont(font);
		lbImagemPan2.setFont(font);
	}
	
	private JLabel getLbImagemZoom(){
		if(lbImagemZoom == null){
			lbImagemZoom = new JLabel();
			lbImagemZoom.setSize(280, 233);
		}
				
		lbImagemZoom.setBorder(BorderFactory.createLineBorder(Color.BLACK));
		lbImagemZoom.setText(Strings.TEXT_LABEL_NENHUMA_IMAGEM_SELECIONADA);
		lbImagemZoom.setHorizontalAlignment(SwingConstants.CENTER);
		lbImagemZoom.addMouseListener(new MouseListener() {			
			@Override
			public void mouseReleased(MouseEvent e) {
				
			}
			
			@Override
			public void mousePressed(MouseEvent e) {
				
			}
			
			@Override
			public void mouseExited(MouseEvent e) {
				
			}
			
			@Override
			public void mouseEntered(MouseEvent e) {
				
			}
			
			@Override
			public void mouseClicked(MouseEvent e) {
				String nome = UtilitariosGUI.getNomeJList((String) getJList().getSelectedValue());
				
				if(ampliada == null){				
					ampliada = new ImagemAmpliada();
				} 
				
				ampliada.setImagem(nome, "zoom", false);
								
				ampliada.setVisible(true);
				ampliada.setState(JFrame.NORMAL);
			}
		});		
		
		return lbImagemZoom;
	}
	
	private JLabel getLbImagemPan1(){
		if(lbImagemPan1 == null){
			lbImagemPan1 = new JLabel();
			lbImagemPan1.setSize(280, 233);
		}
				
		lbImagemPan1.setBorder(BorderFactory.createLineBorder(Color.BLACK));
		lbImagemPan1.setText(Strings.TEXT_LABEL_NENHUMA_IMAGEM_SELECIONADA);
		lbImagemPan1.setHorizontalAlignment(SwingConstants.CENTER);
		lbImagemPan1.addMouseListener(new MouseListener() {			
			@Override
			public void mouseReleased(MouseEvent e) {
				
			}
			
			@Override
			public void mousePressed(MouseEvent e) {
				
			}
			
			@Override
			public void mouseExited(MouseEvent e) {
				
			}
			
			@Override
			public void mouseEntered(MouseEvent e) {
				
			}
			
			@Override
			public void mouseClicked(MouseEvent e) {
				String nome = UtilitariosGUI.getNomeJList((String) getJList().getSelectedValue());
				
				if(ampliada == null){				
					ampliada = new ImagemAmpliada();
				} 
				
				ampliada.setImagem(nome, "pan1", false);
								
				ampliada.setVisible(true);
				ampliada.setState(JFrame.NORMAL);
			}
		});		
		
		return lbImagemPan1;
	}
	
	private JLabel getLbImagemPan2(){
		if(lbImagemPan2 == null){
			lbImagemPan2 = new JLabel();
			lbImagemPan2.setSize(280, 233);
		}
				
		lbImagemPan2.setBorder(BorderFactory.createLineBorder(Color.BLACK));
		lbImagemPan2.setText(Strings.TEXT_LABEL_NENHUMA_IMAGEM_SELECIONADA);
		lbImagemPan2.setHorizontalAlignment(SwingConstants.CENTER);
		lbImagemPan2.addMouseListener(new MouseListener() {			
			@Override
			public void mouseReleased(MouseEvent e) {
				
			}
			
			@Override
			public void mousePressed(MouseEvent e) {
				
			}
			
			@Override
			public void mouseExited(MouseEvent e) {
				
			}
			
			@Override
			public void mouseEntered(MouseEvent e) {
				
			}
			
			@Override
			public void mouseClicked(MouseEvent e) {
				String nome = UtilitariosGUI.getNomeJList((String) getJList().getSelectedValue());
				
				if(ampliada == null){				
					ampliada = new ImagemAmpliada();
				} 
				
				ampliada.setImagem(nome, "pan2", false);
								
				ampliada.setVisible(true);
				ampliada.setState(JFrame.NORMAL);
			}
		});		
		
		return lbImagemPan2;
	}
	
	private JScrollPane getJScrollBarList() {
		if (jScrollPaneList == null) {
			jScrollPaneList = new JScrollPane(getJList());
		}
		
		jScrollPaneList.setBounds(new Rectangle(710, 115, 312, 346));
		jScrollPaneList.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		jScrollPaneList.setPreferredSize(new Dimension(3, 18));
		jScrollPaneList.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
		
		return jScrollPaneList;
	}
	
	private JList getJList() {
		if (jList == null) {			
			jList = new JList();
			jList.setBounds(new Rectangle(700, 115, 302, 546));
			jList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);			
			jList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
				public void valueChanged(javax.swing.event.ListSelectionEvent e) {
					if(!e.getValueIsAdjusting()){
						if(!jList.isSelectionEmpty()){
							getCbSaidaReal().setEnabled(true);
							String selecionadoAtual = UtilitariosGUI.getNomeJList((String) jList.getSelectedValue());
							
							lbItemCorrente.setText(String.valueOf(jList.getSelectedIndex()+1));
							
//							mostraEstatistica(selecionadoAtual);
							mostraSaidas(selecionadoAtual);
							mostraImagem(selecionadoAtual);
							plotaGrafico(selecionadoAtual);			
							getTfPesquisar().setText(selecionadoAtual);
							
						}
					}
				}
			});
			jList.addKeyListener(new KeyListener() {				
				@Override
				public void keyTyped(KeyEvent e) {					
				}
				
				@Override
				public void keyReleased(KeyEvent e) {					
				}
				
				@Override
				public void keyPressed(KeyEvent e) {
					if(e.getKeyCode() == KeyEvent.VK_DELETE){
						String selecionado = UtilitariosGUI.getNomeJList((String) getJList().getSelectedValue());
						int indexSelecionado = getJList().getSelectedIndex();
						
						Object[] options = {Strings.TEXT_OP_SIM, Strings.TEXT_OP_NAO};					
						int resp = JOptionPane.showOptionDialog(null, Strings.TEXT_LABEL_PERGUNTA_REMOVER + selecionado +" ?", 
								Strings.TITULO_JOPTION_PANE, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, 
								null, options, options[0]);
						
						if(resp == JOptionPane.YES_OPTION){
							removeItem(selecionado);
							
							if(model_todos != null){
								model_todos.removeElement(selecionado);
								
								if(getJList().isSelectionEmpty()){
									if(indexSelecionado == model_todos.getSize()){
										getJList().setSelectedIndex(indexSelecionado - 1);
									} else{
										getJList().setSelectedIndex(indexSelecionado);
									}
								}
								
								lbQtd.setText(model_todos.size() + "");
							}
							
							if(!getRbTodos().isSelected()){
								if(model != null){
									model.removeElementAt(indexSelecionado);
									
									if(getJList().isSelectionEmpty()){
										if(indexSelecionado == model.getSize()){
											getJList().setSelectedIndex(indexSelecionado - 1);
										} else{
											getJList().setSelectedIndex(indexSelecionado);
										}
									}
	
									lbQtd.setText(model.size() + "");
								}
							}
						}
					}
				}
			});
		}
		
		return jList;
	}

	private void mostraSaidas(String selecionadoAtual) {
		File fileMetrologico = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_METROLOGICO, selecionadoAtual + Constantes.EXTENSAO_TXT);
		File fileRNA = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_RNA, selecionadoAtual + Constantes.EXTENSAO_TXT);
		File fileReal = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_REAL, selecionadoAtual + Constantes.EXTENSAO_TXT);
		
		if(fileMetrologico.exists() && fileReal.exists() && fileRNA.exists()){
			String conteudoFileMetrologico = OperacoesArquivos.lerTxt(fileMetrologico.getAbsolutePath()).get(0);
			String conteudoFileRNA = OperacoesArquivos.lerTxt(fileRNA.getAbsolutePath()).get(0);
			String conteudoFileReal = OperacoesArquivos.lerTxt(fileReal.getAbsolutePath()).get(0);
			
			String porteMetrologico = String.valueOf(Util.getPorte(Integer.parseInt(conteudoFileMetrologico)));
			String porteRNA = String.valueOf(Util.getPorte(Integer.parseInt(conteudoFileRNA)));
			String porteReal = String.valueOf(Util.getPorte(Integer.parseInt(conteudoFileReal)));
			
			lbSaidaMetrologico.setText(porteMetrologico);
			lbSaidaRNA.setText(porteRNA);
			cbSaidaReal.setSelectedItem(porteReal);
		}
	}
	
	private void plotaGrafico(String nome){
		File file = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_FLUXO_NORMALIZADO, nome + Constantes.EXTENSAO_TXT);
		if(file.exists()){
			String nomeDoArquivo = file.getAbsolutePath();
			
			List<String> conteudo = OperacoesArquivos.lerTxt(nomeDoArquivo);
			List<PacoteF> fluxos = new ArrayList<PacoteF>();
			
			for (String item : conteudo) {
				if(item.startsWith("F")){
					fluxos.add(new PacoteF(item));
				}
			}
			
			plotarPerfil(fluxos);
		} else{
			getSeries1().clear();
			getSeries2().clear();
		}
	}
	
	private void plotarPerfil(List<PacoteF> fluxos){
		getSeries1().clear();
		getSeries2().clear();
		int offset = fluxos.get(0).getTempo();
		
		for (int i = 0; i < fluxos.size(); i++) {
			getSeries1().add(fluxos.get(i).getTempo() - offset, fluxos.get(i).getCampoLaco1());
			getSeries2().add(fluxos.get(i).getTempo() - offset, fluxos.get(i).getCampoLaco2());
		}
	}
	
	private void mostraImagem(String nome){
		File fileZoom = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_IMAGENS_ZOOM, nome + Constantes.EXTENSAO_JPG);
		File filePan1 = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_IMAGENS_PAN_1, nome + Constantes.EXTENSAO_JPG);
		File filePan2 = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_IMAGENS_PAN_2, nome + Constantes.EXTENSAO_JPG);
		
		
		ImageIcon iconZoom = UtilitariosGUI.criaIconDaImagem(fileZoom);
		ImageIcon iconPan1 = UtilitariosGUI.criaIconDaImagem(filePan1);
		ImageIcon iconPan2 = UtilitariosGUI.criaIconDaImagem(filePan2);
						
		lbImagemZoom.setIcon(iconZoom);
		lbImagemPan1.setIcon(iconPan1);
		lbImagemPan2.setIcon(iconPan2);
		
		if(iconZoom == null){
			lbImagemZoom.setText(Strings.TEXT_LABEL_NENHUMA_IMAGEM_SELECIONADA);
		} if(iconPan1 == null){
			lbImagemPan1.setText(Strings.TEXT_LABEL_NENHUMA_IMAGEM_SELECIONADA);
		} if(iconPan2 == null){
			lbImagemPan2.setText(Strings.TEXT_LABEL_NENHUMA_IMAGEM_SELECIONADA);
		}		
	}

	private void limparTodosCampos(){		
		lbImagemZoom.setIcon(null);
		lbImagemZoom.setText(Strings.TEXT_LABEL_NENHUMA_IMAGEM_SELECIONADA);
		lbImagemPan1.setIcon(null);
		lbImagemPan1.setText(Strings.TEXT_LABEL_NENHUMA_IMAGEM_SELECIONADA);
		lbImagemPan2.setIcon(null);
		lbImagemPan2.setText(Strings.TEXT_LABEL_NENHUMA_IMAGEM_SELECIONADA);
		
		getSeries1().clear();
		getSeries2().clear();
	}

	private JRadioButton getRbTodos() {
		if (rbTodos == null) {
			rbTodos = new JRadioButton();
			rbTodos.setBounds(new Rectangle(700, 10, 109, 21));
			rbTodos.setText(Strings.TEXT_LABEL_TODOS_SEE);
			rbTodos.setBackground(Color.WHITE);
			rbTodos.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					carregaDados(Strings.TEXT_LABEL_TODOS);
				}
			});
		}
		return rbTodos;
	}

	private JRadioButton getRbT() {
		if (rbT == null) {
			rbT = new JRadioButton();
			rbT.setBounds(new Rectangle(700, 45, 50, 21));
			rbT.setText(Strings.TEXT_LABEL_T);
			rbT.setBackground(Color.WHITE);
			rbT.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					carregaDados(Strings.TEXT_LABEL_T);
				}
			});
		}
		return rbT;
	}

	private JRadioButton getRbP() {
		if (rbP == null) {
			rbP = new JRadioButton();
			rbP.setBounds(new Rectangle(770, 45, 50, 21));
			rbP.setText(Strings.TEXT_LABEL_P);
			rbP.setBackground(Color.WHITE);
			rbP.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					carregaDados(Strings.TEXT_LABEL_P);
				}
			});
		}
		return rbP;
	}

	private JRadioButton getRbM() {
		if (rbM == null) {
			rbM = new JRadioButton();
			rbM.setBounds(new Rectangle(850, 45, 50, 21));
			rbM.setText(Strings.TEXT_LABEL_M);
			rbM.setBackground(Color.WHITE);
			rbM.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					carregaDados(Strings.TEXT_LABEL_M);
				}
			});
		}
		return rbM;
	}

	private JRadioButton getRbC() {
		if (rbC == null) {
			rbC = new JRadioButton();
			rbC.setBounds(new Rectangle(930, 45, 50, 21));
			rbC.setText(Strings.TEXT_LABEL_C);
			rbC.setBackground(Color.WHITE);
			rbC.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					carregaDados(Strings.TEXT_LABEL_G);
				}
			});
		}
		return rbC;
	}
	
	private JRadioButton getRbO() {
		if (rbO == null) {
			rbO = new JRadioButton();
			rbO.setBounds(new Rectangle(990, 45, 50, 21));
			rbO.setText(Strings.TEXT_LABEL_O);
			rbO.setBackground(Color.WHITE);
			rbO.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					carregaDados(Strings.TEXT_LABEL_O);
				}
			});
		}
		return rbO;
	}
	
	private void createButtonGroupSeleciona(){
		ButtonGroup group = new ButtonGroup();
		group.add(getRbTodos());
		group.add(getRbT());
		group.add(getRbP());
		group.add(getRbM());
		group.add(getRbC());
		group.add(getRbO());
	}
	
	private void eventoSalvar() {		
		String selecionadoComboBox = (String) getCbSaidaReal().getSelectedItem();
		String selecionadoJList = (String) getJList().getSelectedValue();
		int index = getJList().getSelectedIndex();
		
		if(!selecionadoComboBox.equalsIgnoreCase("")){
			int saidaIdeal = Util.getPorte(selecionadoComboBox.charAt(0));
			String saida = String.valueOf(saidaIdeal);
			
			File file = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_REAL, selecionadoJList + Constantes.EXTENSAO_TXT);
			String nomeDoArquivo = file.getAbsolutePath();
			OperacoesArquivos.salvaDadosArquivoTexto(saida, nomeDoArquivo, false);
			
			String renomeado = OperacoesArquivos.RENOMEIA_ARQUIVOS(
					selecionadoJList, saidaIdeal, Constantes.ESTATISTICAS);
			
			if(getRbTodos().isSelected()){
				model_todos.setElementAt(renomeado, index);
			} else{
				model.setElementAt(renomeado, index);
			}
		}
	}
	
	private JButton getBtGeraEstatisticas() {
		if (btGeraEstatisticas  == null) {
			ImageIcon iconSave = UtilitariosGUI.criaIconDaImagem(Constantes.ICONE_GENERATE, 32, 32);
			
			btGeraEstatisticas = new JButton();
			btGeraEstatisticas.setBounds(new Rectangle(730, 510, 40, 40));
//			btGeraEstatisticas("Gerar");
			btGeraEstatisticas.setIcon(iconSave);
			btGeraEstatisticas.setToolTipText(Strings.TEXT_LABEL_GERAR_ESTATISCAS);
			btGeraEstatisticas.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					if(getJList().getModel().getSize() <= 0){
//					if(model_todos == null || model_todos.getSize() < 0){
						JOptionPane.showMessageDialog(null, Strings.TEXT_LABEL_LISTA_VAZIA,
								Strings.TEXT_LABEL_ATENCAO, JOptionPane.WARNING_MESSAGE);
						
						return;
					}
					
					geraEstatisticas();
				}
			});
		}
		return btGeraEstatisticas;
	}
	
	private JButton getBtSalvar() {
		if (btSalvar == null) {
			ImageIcon iconSave = UtilitariosGUI.criaIconDaImagem(Constantes.ICONE_SAVE, 32, 32);
			
			btSalvar = new JButton();
			btSalvar.setBounds(new Rectangle(555, 300, 40, 40));
//			btSalvar.setText("Salvar");
			btSalvar.setIcon(iconSave);
			btSalvar.setToolTipText(Strings.TEXT_LABEL_SALVAR_ESTATISCA);
			btSalvar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					if(!getCbSaidaReal().isEnabled()){
						JOptionPane.showMessageDialog(null, Strings.TEXT_LABEL_SELECIONE_ITEM_LISTA,
								Strings.TEXT_LABEL_ATENCAO, JOptionPane.WARNING_MESSAGE);
						
						return;
					}
					eventoSalvar();
				}
			});
		}
		return btSalvar;
	}
	
	private JButton getBtRecarregar(){
		if(btRecarregar  == null){
			ImageIcon iconRefresh = UtilitariosGUI.criaIconDaImagem(Constantes.ICONE_REFRESH, 24, 24);
			String conteudo = Strings.TEXT_LABEL_RECARREGA;
			
			btRecarregar = new JButton();
			btRecarregar.setBounds(new Rectangle(890, 510, 40, 40));
			btRecarregar.setIcon(iconRefresh);
			btRecarregar.setToolTipText(conteudo);
			btRecarregar.addActionListener(new java.awt.event.ActionListener(){
				@Override
				public void actionPerformed(ActionEvent e) {
					carregaDadosIniciais();					
				}				
			});
		}
		
		return btRecarregar;
	}
	
	private JButton getBtRemover() {
		if (btRemover  == null) {
			ImageIcon iconDelete = UtilitariosGUI.criaIconDaImagem(Constantes.ICONE_DELETE, 24, 24);
			String conteudo = Strings.TEXT_LABEL_REMOVE;
			
			btRemover = new JButton();
			btRemover.setBounds(new Rectangle(555, 360, 40, 40));
//			btRemover.setText("Remover");
			btRemover.setIcon(iconDelete);
			btRemover.setToolTipText(conteudo);
			btRemover.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					if(getJList().isSelectionEmpty()){
						JOptionPane.showMessageDialog(null, Strings.TEXT_LABEL_SELECIONE_ITEM_LISTA,
								Strings.TEXT_LABEL_ATENCAO, JOptionPane.WARNING_MESSAGE);
						
						return;
					}					
					
					String selecionado = UtilitariosGUI.getNomeJList((String) getJList().getSelectedValue());
					int indexSelecionado = getJList().getSelectedIndex();
					
					Object[] options = {Strings.TEXT_OP_SIM, Strings.TEXT_OP_NAO};					
					int resp = JOptionPane.showOptionDialog(null, Strings.TEXT_LABEL_PERGUNTA_REMOVER + selecionado +" ?", 
							Strings.TITULO_JOPTION_PANE, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, 
							null, options, options[0]);
					
					if(resp == JOptionPane.YES_OPTION){
						removeItem(selecionado);
						
						if(model_todos != null){
							model_todos.removeElement(selecionado);
							
							if(getJList().isSelectionEmpty()){
								if(indexSelecionado == model_todos.getSize()){
									getJList().setSelectedIndex(indexSelecionado - 1);
								} else{
									getJList().setSelectedIndex(indexSelecionado);
								}
							}
							
							lbQtd.setText(String.valueOf(model_todos.size()));
						}
						
						if(!getRbTodos().isSelected()){
							if(model != null){
								model.removeElementAt(indexSelecionado);
								
								if(getJList().isSelectionEmpty()){
									if(indexSelecionado == model.getSize()){
										getJList().setSelectedIndex(indexSelecionado - 1);
									} else{
										getJList().setSelectedIndex(indexSelecionado);
									}
								}

								lbQtd.setText(model.size() + "");
							}
						}
						
					}
				}
			});
		}
		return btRemover;
	}
	
	private JButton getBtRemoveInvalidos() {
		if (btRemoveInvalidos == null) {
			ImageIcon iconRefresh = UtilitariosGUI.criaIconDaImagem(Constantes.ICONE_DELETE_ALL, 24, 24);
			String conteudo = Strings.TEXT_LABEL_REMOVE_SEM_IMAGEM;
			
			btRemoveInvalidos = new JButton();
			btRemoveInvalidos.setBounds(new Rectangle(950, 510, 40, 40));
//			btRemoveInvalidos.setText("Remover Arquivos Sem Imagem");
			btRemoveInvalidos.setIcon(iconRefresh);
			btRemoveInvalidos.setToolTipText(conteudo);
			btRemoveInvalidos.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					Object[] options = {Strings.TEXT_OP_SIM, Strings.TEXT_OP_NAO};					
					
					int resp = JOptionPane.showOptionDialog(null, Strings.TEXT_LABEL_REMOVE_SEM_IMAGEM_MSG, 
							Strings.TITULO_JOPTION_PANE, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, 
							null, options, options[0]);
					
					if(resp == JOptionPane.YES_OPTION){
						excluirSemImagem();
						carregaDadosIniciais();
						
						if(model_todos.size() > 0){
							getJList().setSelectedIndex(0);
						}
						
						JOptionPane.showMessageDialog(null, Strings.TEXT_LABEL_ARQUIVOS_REMOVIDOS_MSG);
					}
				}
			});
		}
		return btRemoveInvalidos;
	}
	
	private void excluirSemImagem(){
		String[] listDirColeta = Constantes.DIRETORIO_PERFIL_ESTATISTICA_REAL.list();
		String[] listDirImagens = Constantes.DIRETORIO_PERFIL_ESTATISTICA_IMAGENS_ZOOM.list();
		
		for (String arquivo : listDirColeta) {
			String nomeDoArquivo = arquivo.split(Constantes.EXTENSAO_TXT)[0];						
			boolean arquivoEncontrado = false;
			
			for (int i = 0; i < listDirImagens.length; i++) {
				String nomeDaImagem = listDirImagens[i].split(Constantes.EXTENSAO_JPG)[0];
								
				if(nomeDoArquivo.startsWith("E") && nomeDoArquivo.equals(nomeDaImagem)){
					arquivoEncontrado = true;
					i = listDirImagens.length;
				}
			}
			
			if(nomeDoArquivo.startsWith("E") && arquivoEncontrado == false){
				removeItem(nomeDoArquivo);
			}
		}
	}
	
	private void removeItem(String nomeItem){
		File fileNorm = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_FLUXO_NORMALIZADO, nomeItem + Constantes.EXTENSAO_TXT);
		File fileOriginal = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_FLUXO_ORIGINAL, nomeItem + Constantes.EXTENSAO_TXT);
		File fileZoomJPG = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_IMAGENS_ZOOM, nomeItem + Constantes.EXTENSAO_JPG);
		File filePan1JPG = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_IMAGENS_PAN_1, nomeItem + Constantes.EXTENSAO_JPG);
		File filePan2JPG = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_IMAGENS_PAN_2, nomeItem + Constantes.EXTENSAO_JPG);
		File fileEstatCSV = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_CSV, nomeItem + Constantes.EXTENSAO_CSV);
		File fileEstatMetro = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_METROLOGICO, nomeItem + Constantes.EXTENSAO_TXT);
		File fileEstatReal = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_REAL, nomeItem + Constantes.EXTENSAO_TXT);
		File fileEstatRNA = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_RNA, nomeItem + Constantes.EXTENSAO_TXT);
				
		if(fileNorm != null && fileNorm.exists()){
			fileNorm.delete();
		} if(fileOriginal != null && fileOriginal.exists()){
			fileOriginal.delete();
		} if(fileZoomJPG != null && fileZoomJPG.exists()){
			fileZoomJPG.delete();
		} if(filePan1JPG != null && filePan1JPG.exists()){
			filePan1JPG.delete();
		} if(filePan2JPG != null && filePan2JPG.exists()){
			filePan2JPG.delete();
		} if(fileEstatMetro != null && fileEstatMetro.exists()){
			fileEstatMetro.delete();
		} if(fileEstatReal != null && fileEstatReal.exists()){
			fileEstatReal.delete();
		} if(fileEstatRNA != null && fileEstatRNA.exists()){
			fileEstatRNA.delete();
		} if(fileEstatCSV != null && fileEstatCSV.exists()){
			fileEstatCSV.delete();
		}
	}
	
	private JMenuItem getJMenuItemSalvarComo(){
		if(jMenuItemSalvarComo == null){
			jMenuItemSalvarComo = new JMenuItem();
			jMenuItemSalvarComo.setText(Strings.TEXT_LABEL_SELECIONAR);
			jMenuItemSalvarComo.addActionListener(new ActionListener() {			
				@Override
				public void actionPerformed(ActionEvent e) {
					switch (CAMPO_SELECIONADO) {
						case CAMPO_TF_PESQUISAR:
							
							break;
						case CAMPO_JLIST:
							
							break;
						default:
							break;
					}					
				}
			});
		}
		
		return jMenuItemSalvarComo;
	}
	
	private JMenuItem getJMenuItemSelecionar(){
		if(jMenuItemSelecionar == null){
			jMenuItemSelecionar = new JMenuItem();
			jMenuItemSelecionar.setText(Strings.TEXT_LABEL_SELECIONAR);
			jMenuItemSelecionar.addActionListener(new ActionListener() {			
				@Override
				public void actionPerformed(ActionEvent e) {
					switch (CAMPO_SELECIONADO) {
						case CAMPO_TF_PESQUISAR:
							tfPesquisar.selectAll();
							break;
						case CAMPO_JLIST:
							
							break;
						default:
							break;
					}					
				}
			});
		}
		
		return jMenuItemSelecionar;
	}
	
	private JMenuItem getJMenuItemCopiar(){
		if(jMenuItemCopiar == null){
			jMenuItemCopiar = new JMenuItem();
			jMenuItemCopiar.setText(Strings.TEXT_LABEL_COPIAR);
			jMenuItemCopiar.addActionListener(new ActionListener() {			
				@Override
				public void actionPerformed(ActionEvent e) {
					switch (CAMPO_SELECIONADO) {
						case CAMPO_TF_PESQUISAR:
							tfPesquisar.selectAll();
							tfPesquisar.copy();
							break;
						case CAMPO_JLIST:
							
							break;
						default:
							break;
					}
				}
			});
		}
		
		return jMenuItemCopiar;
	}
	
	private JMenuItem getJMenuItemColar(){
		if(jMenuItemColar == null){
			jMenuItemColar = new JMenuItem();
			jMenuItemColar.setText(Strings.TEXT_LABEL_COLAR);
			jMenuItemColar.addActionListener(new ActionListener() {			
				@Override
				public void actionPerformed(ActionEvent e) {
					switch (CAMPO_SELECIONADO) {
						case CAMPO_TF_PESQUISAR:
							tfPesquisar.paste();
							break;
						case CAMPO_JLIST:
							
							break;
						case CAMPO_TA_ORIGINAL:
							
							break;
						case CAMPO_TA_NORMALIZADO:
							
							break;
						default:
							break;
					}
				}
			});
		}
		
		return jMenuItemColar;
	}
	
	private JMenuItem getJMenuItemRecortar(){
		if(jMenuItemRecortar == null){
			jMenuItemRecortar = new JMenuItem();		
			jMenuItemRecortar.setText(Strings.TEXT_LABEL_RECORTAR);
			jMenuItemRecortar.addActionListener(new ActionListener() {			
				@Override
				public void actionPerformed(ActionEvent e) {
					switch (CAMPO_SELECIONADO) {
						case CAMPO_TF_PESQUISAR:
							tfPesquisar.selectAll();
							tfPesquisar.cut();
							break;
						case CAMPO_JLIST:
							
							break;
						case CAMPO_TA_ORIGINAL:
							
							break;
						case CAMPO_TA_NORMALIZADO:
							
							break;
						default:
							break;
					}
				}
			});
		}
		
		return jMenuItemRecortar;
	}
	
	private JPopupMenu getJPopupMenu(){		
		if(jPopupMenu == null){
			jPopupMenu = new JPopupMenu();
		}
		
		jPopupMenu.removeAll();
		
		if(jPopMenuSelecionar){
			jPopupMenu.add(getJMenuItemSelecionar());
		} if(jPopMenuCopiar){
			jPopupMenu.add(getJMenuItemCopiar());
		} if(jPopMenuColar){
			jPopupMenu.add(getJMenuItemColar());
		} if(jPopMenuRecortar){
//			jPopupMenu.add(getJMenuItemRecortar());
		} if(jPopMenuSalvarComo){
//			jPopupMenu.add(getJMenuItemSalvarComo());
		} 
		
		jPopupMenu.setVisible(true);
		
		return jPopupMenu;
	}
	
	private void imprimeNaTela(int qtdAcertos, int qtdErros, int total, boolean isRNA){
		DecimalFormat df1 = new DecimalFormat();
		df1.applyPattern("#,##0.00%");
		
		double porcentAcertos = (double) qtdAcertos / (double) total;
		double porcentErros = (double) qtdErros / (double) total;

		String percentAcertosStr = df1.format(porcentAcertos);
		String percentErrosStr = df1.format(porcentErros);
		
		if(isRNA){
			lbQtdAcertosRNA.setText(String.valueOf(qtdAcertos));
			lbQtdErrosRNA.setText(String.valueOf(qtdErros));
			
			lbAcertosPercentRNA.setText(percentAcertosStr);
			lbErrosPercentRNA.setText(percentErrosStr);
		} else{
			lbQtdAcertosMetro.setText(String.valueOf(qtdAcertos));
			lbQtdErrosMetro.setText(String.valueOf(qtdErros));
			
			lbAcertosPercentMetro.setText(percentAcertosStr);
			lbErrosPercentMetro.setText(percentErrosStr);
		}
	}
	
	private void geraEstatisticas(){
		listaAcertosMetro = new ArrayList<String>();
		listaErrosMetro = new ArrayList<String>();
		listaAcertosRNA = new ArrayList<String>();
		listaErrosRNA = new ArrayList<String>();				
		String[] listaReal = Constantes.DIRETORIO_PERFIL_ESTATISTICA_REAL.list();
		
		StringBuffer conteudoEstatisticasFile = new StringBuffer();
		File[] dirReal = Constantes.DIRETORIO_PERFIL_ESTATISTICA_REAL.listFiles();
		
		int contadorTotal = 0;
		int contadorAcertosMetro = 0;
		int contadorErrosMetro = 0;
		int contadorAcertosRNA = 0;
		int contadorErrosRNA = 0;
		
		boolean temMetro = false;
		boolean temRNA = false;
		
		String linhaAtual = "";
		String separador = ",";
		
		for (File fileReal : dirReal) {			
			if(fileReal.getName().startsWith("E")){
				linhaAtual = fileReal.getName().split(Constantes.EXTENSAO_TXT)[0];
				String nomeFluxo = linhaAtual;
				
				String itemReal = OperacoesArquivos.lerTxt(fileReal.getAbsolutePath()).get(0).trim();
				
				//Contador Metrologico
				File fileMetro = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_METROLOGICO, fileReal.getName());
				if(fileMetro != null && fileMetro.exists() && fileMetro.getName().startsWith("E")){
//					temMetro = true;
					String itemMetro = OperacoesArquivos.lerTxt(fileMetro.getAbsolutePath()).get(0).trim();
					linhaAtual += separador + itemMetro;
					
					if(itemReal.equals(itemMetro)){
						contadorAcertosMetro++;
						listaAcertosMetro.add(nomeFluxo);
					} else{
						contadorErrosMetro++;
						listaErrosMetro.add(nomeFluxo);
					}
				} else{
//					temMetro = false;
					String item = fileReal.getName().split(Constantes.EXTENSAO_TXT)[0];
					removeItem(item);
				}
				
				
				//Contador RNA				
				File fileRNA = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_RNA, fileReal.getName());
				if(fileRNA != null && fileRNA.exists() && fileRNA.getName().startsWith("E")){
//					temRNA = true;
					String itemRNA = OperacoesArquivos.lerTxt(fileRNA.getAbsolutePath()).get(0).trim();
					linhaAtual += separador + itemRNA;
					
					if(itemReal.equals(itemRNA)){
						contadorAcertosRNA++;
						listaAcertosRNA.add(nomeFluxo);
					} else{
						contadorErrosRNA++;
						listaErrosRNA.add(nomeFluxo);
					}
				} else{
//					temRNA = false;
					String item = fileReal.getName().split(Constantes.EXTENSAO_TXT)[0];
					removeItem(item);
				}
				
				linhaAtual += separador + itemReal;
				conteudoEstatisticasFile.append(linhaAtual + "\n");
				
				contadorTotal++;
			}
		}
		
		conteudoEstatisticasFile.append("\n\n");
		conteudoEstatisticasFile.append("metrologico" + separador + contadorAcertosMetro + separador + contadorErrosMetro + "\n");
		conteudoEstatisticasFile.append("rna" + separador + contadorAcertosRNA + separador + contadorErrosRNA);
		
		OperacoesArquivos.salvaDadosArquivoTexto(conteudoEstatisticasFile.toString(),
				Constantes.PERFIL_ESTATISTICA_TOTAIS.getAbsolutePath(), false);
		
		
		String linha = montaLinhaResumo();
		
		OperacoesArquivos.salvaDadosArquivoTexto(linha,
				Constantes.PERFIL_ESTATISTICA_RESUMO.getAbsolutePath(), false);
		
		imprimeNaTela(contadorAcertosRNA, contadorErrosRNA, contadorTotal, true);
		imprimeNaTela(contadorAcertosMetro, contadorErrosMetro, contadorTotal, false);
	}
	
	private String montaLinhaResumo(){
		String[] listaReal = Constantes.DIRETORIO_PERFIL_ESTATISTICA_REAL.list();
		
		int qtd_acertos_T_rna = UtilitariosGUI.selecionaPorTipo(listaAcertosRNA, Strings.TEXT_LABEL_T).size();
		int qtd_acertos_P_rna = UtilitariosGUI.selecionaPorTipo(listaAcertosRNA, Strings.TEXT_LABEL_P).size();
		int qtd_acertos_M_rna = UtilitariosGUI.selecionaPorTipo(listaAcertosRNA, Strings.TEXT_LABEL_M).size();
		int qtd_acertos_C_rna = UtilitariosGUI.selecionaPorTipo(listaAcertosRNA, Strings.TEXT_LABEL_C).size();
		int qtd_acertos_O_rna = UtilitariosGUI.selecionaPorTipo(listaAcertosRNA, Strings.TEXT_LABEL_O).size();
		
		List<String> lista_erros_T_rna = UtilitariosGUI.selecionaPorTipo(listaErrosRNA, Strings.TEXT_LABEL_T);
		List<String> lista_erros_P_rna = UtilitariosGUI.selecionaPorTipo(listaErrosRNA, Strings.TEXT_LABEL_P);
		List<String> lista_erros_M_rna = UtilitariosGUI.selecionaPorTipo(listaErrosRNA, Strings.TEXT_LABEL_M);
		List<String> lista_erros_C_rna = UtilitariosGUI.selecionaPorTipo(listaErrosRNA, Strings.TEXT_LABEL_C);
		List<String> lista_erros_O_rna = UtilitariosGUI.selecionaPorTipo(listaErrosRNA, Strings.TEXT_LABEL_O);
				
		int qtd_T_real = UtilitariosGUI.selecionaPorTipo(listaReal, Strings.TEXT_LABEL_T).size();
		int qtd_P_real = UtilitariosGUI.selecionaPorTipo(listaReal, Strings.TEXT_LABEL_P).size();
		int qtd_M_real = UtilitariosGUI.selecionaPorTipo(listaReal, Strings.TEXT_LABEL_M).size();
		int qtd_C_real = UtilitariosGUI.selecionaPorTipo(listaReal, Strings.TEXT_LABEL_C).size();
		int qtd_O_real = UtilitariosGUI.selecionaPorTipo(listaReal, Strings.TEXT_LABEL_O).size();
		
		String linha = "";
		
		linha += " ";
		linha += ",";
		linha += Strings.TEXT_LABEL_T;
		linha += ",";
		linha += Strings.TEXT_LABEL_P;
		linha += ",";
		linha += Strings.TEXT_LABEL_M;
		linha += ",";
		linha += Strings.TEXT_LABEL_C;
		linha += ",";
		linha += Strings.TEXT_LABEL_O;
		linha += ",";
		linha += "Real";
		linha += "\n";
		
		linha += Strings.TEXT_LABEL_T;
		linha += ",";
		linha += estatisticasResumo(lista_erros_T_rna, 'T', qtd_acertos_T_rna);
		linha += ",";
		linha += qtd_T_real;
		linha += "\n";
		
		linha += Strings.TEXT_LABEL_P;
		linha += ",";
		linha += estatisticasResumo(lista_erros_P_rna, 'P', qtd_acertos_P_rna);
		linha += ",";
		linha += qtd_P_real;
		linha += "\n";
		
		linha += Strings.TEXT_LABEL_M;
		linha += ",";
		linha += estatisticasResumo(lista_erros_M_rna, 'M', qtd_acertos_M_rna);
		linha += ",";
		linha += qtd_M_real;
		linha += "\n";

		linha += Strings.TEXT_LABEL_C;
		linha += ",";
		linha += estatisticasResumo(lista_erros_C_rna, 'C', qtd_acertos_C_rna);
		linha += ",";
		linha += qtd_C_real;
		linha += "\n";

		linha += Strings.TEXT_LABEL_O;
		linha += ",";
		linha += estatisticasResumo(lista_erros_O_rna, 'O', qtd_acertos_O_rna);
		linha += ",";
		linha += qtd_O_real;
		linha += "\n";
		
		linha += "RNA";
//		linha += ",";
//		linha += "" + (lista_erros_T_rna.size() + qtd_acertos_T_rna);
//		linha += ",";
//		linha += "" + (lista_erros_P_rna.size() + qtd_acertos_P_rna);
//		linha += ",";
//		linha += "" + (lista_erros_M_rna.size() + qtd_acertos_M_rna);
//		linha += ",";
//		linha += "" + (lista_erros_C_rna.size() + qtd_acertos_C_rna);
//		linha += ",";
//		linha += "" + (lista_erros_O_rna.size() + qtd_acertos_O_rna);
//		linha += "\n";
				
		return linha;
	}
	
	private String estatisticasResumo(List<String> lista, char porte, int acertos){
		String linha = "";
		
		int qtd_erros_T_tipo_corrente = 0;
		int qtd_erros_P_tipo_corrente = 0;
		int qtd_erros_M_tipo_corrente = 0;
		int qtd_erros_C_tipo_corrente = 0;
		int qtd_erros_O_tipo_corrente = 0;
		
		for (String string : lista) {
			File file_rna = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_RNA, string + Constantes.EXTENSAO_TXT);
			File file_real = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_REAL, string + Constantes.EXTENSAO_TXT);
			
			int saidaRNA = Integer.parseInt(OperacoesArquivos.lerTxt(file_rna.getAbsolutePath()).get(0));
			int saidaReal = Integer.parseInt(OperacoesArquivos.lerTxt(file_real.getAbsolutePath()).get(0));
			
			if(saidaRNA != saidaReal){
				switch (saidaRNA) {
					case 1:
						qtd_erros_T_tipo_corrente++;
						break;
					case 2:
						qtd_erros_P_tipo_corrente++;				
						break;
					case 3:
						qtd_erros_M_tipo_corrente++;
						break;
					case 4:
						qtd_erros_C_tipo_corrente++;
						break;
					case 5:
						qtd_erros_O_tipo_corrente++;
						break;
					default:
						break;
				}
			}
		}
		
		switch (porte) {
			case 'T':
				linha += "" + acertos;
				linha += ",";
				linha += "" + qtd_erros_P_tipo_corrente;
				linha += ",";
				linha += "" + qtd_erros_M_tipo_corrente;
				linha += ",";
				linha += "" + qtd_erros_C_tipo_corrente;
				linha += ",";
				linha += "" + qtd_erros_O_tipo_corrente;
				
				break;
			case 'P':
				linha += "" + qtd_erros_T_tipo_corrente;
				linha += ",";
				linha += "" + acertos;
				linha += ",";
				linha += "" + qtd_erros_M_tipo_corrente;
				linha += ",";
				linha += "" + qtd_erros_C_tipo_corrente;
				linha += ",";
				linha += "" + qtd_erros_O_tipo_corrente;
						
				break;
			case 'M':
				linha += "" + qtd_erros_T_tipo_corrente;
				linha += ",";
				linha += "" + qtd_erros_P_tipo_corrente;
				linha += ",";
				linha += "" + acertos;
				linha += ",";
				linha += "" + qtd_erros_C_tipo_corrente;
				linha += ",";
				linha += "" + qtd_erros_O_tipo_corrente;
				
				break;
			case 'C':
				linha += "" + qtd_erros_T_tipo_corrente;
				linha += ",";
				linha += "" + qtd_erros_P_tipo_corrente;
				linha += ",";
				linha += "" + qtd_erros_M_tipo_corrente;
				linha += ",";
				linha += "" + acertos;
				linha += ",";
				linha += "" + qtd_erros_O_tipo_corrente;
				
				break;
			case 'O':
				linha += "" + qtd_erros_T_tipo_corrente;
				linha += ",";
				linha += "" + qtd_erros_P_tipo_corrente;
				linha += ",";
				linha += "" + qtd_erros_M_tipo_corrente;
				linha += ",";
				linha += "" + qtd_erros_C_tipo_corrente;
				linha += ",";
				linha += "" + acertos;
				
				break;
			default:
				break;
		}
		
		return linha;
	}
	
	private void carregaDadosIniciais(){
		atualizarNomes();
		
		getCbSaidaReal().setEnabled(false);
		String[] listDir = OperacoesArquivos.criaListFromDir(
				Constantes.DIRETORIO_PERFIL_ESTATISTICA_REAL, Constantes.EXTENSAO_TXT);
		
		model_todos = new DefaultListModel();
		
		if(listDir != null){
			MergesortString mergesort = new MergesortString();
			mergesort.sort(listDir);
			
			getJList().removeAll();
			getJList().updateUI();
		
			model_todos.removeAllElements();
			
			for (int i = 0; i < listDir.length; i++) {
				model_todos.addElement(listDir[i].toString().toUpperCase());
			}
			
			if(model_todos.size() == 0){
				getBtRemoveInvalidos().setEnabled(false);
			}
		} else{
			getRbTodos().setEnabled(false);
			getRbT().setEnabled(false);
			getRbP().setEnabled(false);
			getRbM().setEnabled(false);
			getRbC().setEnabled(false);
			getRbO().setEnabled(false);
		}
				
		carregaDados(Strings.TEXT_LABEL_TODOS);
	}
	
	private void carregaDados(String tipo){
		if(tipo.equalsIgnoreCase(Strings.TEXT_LABEL_TODOS)){
			getRbTodos().setSelected(true);
			
			getJList().setModel(model_todos);
			
			if(model_todos.size() == 0){
				getBtRemoveInvalidos().setEnabled(false);
			}
			
			lbQtd.setText(model_todos.size() + "");
		} else{
			model = new DefaultListModel();
			model.removeAllElements();
			 
			if(tipo.equalsIgnoreCase(Strings.TEXT_LABEL_T)){
				getRbT().setSelected(true);
				model = UtilitariosGUI.selecionaPorTipo(model_todos, tipo);			
			} else if(tipo.equalsIgnoreCase(Strings.TEXT_LABEL_P)){
				getRbP().setSelected(true);
				model = UtilitariosGUI.selecionaPorTipo(model_todos, tipo);
			} else if(tipo.equalsIgnoreCase(Strings.TEXT_LABEL_M)){
				getRbM().setSelected(true);
				model = UtilitariosGUI.selecionaPorTipo(model_todos, tipo);
			} else if(tipo.equalsIgnoreCase(Strings.TEXT_LABEL_G)){
				getRbC().setSelected(true);
				model = UtilitariosGUI.selecionaPorTipo(model_todos, tipo);
			} else if(tipo.equalsIgnoreCase(Strings.TEXT_LABEL_O)){
				getRbO().setSelected(true);
				model = UtilitariosGUI.selecionaPorTipo(model_todos, tipo);
			}
			
			if(model.size() == 0){
				getBtRemoveInvalidos().setEnabled(false);
			}
			
			getJList().setModel(model);
			lbQtd.setText(model.size()+"");
		}
	}

	public JTabbedPane getjTabbedPane() {
		if(jTabbedPane == null){
			jTabbedPane = new JTabbedPane();
			jTabbedPane.setBounds(new Rectangle(17, 30, 305, 240));
			jTabbedPane.addTab("Zoom", getLbImagemZoom());
			jTabbedPane.addTab("Pan 1", getLbImagemPan1());
			jTabbedPane.addTab("Pan 2", getLbImagemPan2());
			jTabbedPane.setForeground(Constantes.COR_AZUL_MARINHO);
		}
		
		return jTabbedPane;
	}
	
	private JTextField getTfPesquisar() {
		if (tfPesquisar == null) {
			tfPesquisar = new JTextField();
			tfPesquisar.setBounds(new Rectangle(710, 85, 312, 19));
			
			tfPesquisar.addMouseListener(new MouseListener() {	
				@Override
				public void mouseReleased(MouseEvent e) {	
					if(e.getButton() == e.BUTTON3){
						checkForTrigedEvent(e);
					}
				}
				
				@Override
				public void mousePressed(MouseEvent e) {
					if(e.getButton() == e.BUTTON3){
						checkForTrigedEvent(e);
					}
				}
				
				@Override
				public void mouseExited(MouseEvent e) {
				}
				
				@Override
				public void mouseEntered(MouseEvent e) {
				}
				
				@Override
				public void mouseClicked(MouseEvent e) {
					if(e.getButton() == e.BUTTON3){
						checkForTrigedEvent(e);
					}
				}
				
				private void checkForTrigedEvent(MouseEvent e){
					if(e.isPopupTrigger()){
						CAMPO_SELECIONADO = CAMPO_TF_PESQUISAR;
						
						jPopMenuColar = true;
						jPopMenuRecortar = true;
						jPopMenuCopiar = true;
						jPopMenuSelecionar = true;
						jPopMenuSalvarComo = false;
						
						getJPopupMenu().show(e.getComponent(), e.getX(), e.getY());
					}
				}
			});
			
			tfPesquisar.addKeyListener(new KeyListener() {				
				@Override
				public void keyTyped(KeyEvent e) {					
				}
				
				@Override
				public void keyReleased(KeyEvent e) {					
				}
				
				@Override
				public void keyPressed(KeyEvent e) {	
					if(e.getKeyCode() == KeyEvent.VK_ENTER){
						String nomeFluxo = tfPesquisar.getText().toUpperCase();
						
						int posicao = -1;
						DefaultListModel listModel = null;
						if(getRbTodos().isSelected()){
							if(model_todos != null){
								listModel = model_todos;
							}
						} else{
							if(model != null){
								listModel = model;
							}
						}
						
						tfPesquisar.setText(nomeFluxo.toUpperCase());
						
						if(listModel != null){
							posicao = Util.buscaBinaria(listModel, nomeFluxo);
							getJList().setModel(listModel);
							
							if(posicao != -1){
								getJList().setSelectedValue(listModel.get(posicao).toString(), true);
							}
						}
					}
				}
			});
		}
		return tfPesquisar;
	}

	private JComboBox getCbSaidaReal() {
		if (cbSaidaReal == null) {
			String itens[] = {"", Strings.TEXT_LABEL_T, Strings.TEXT_LABEL_P, Strings.TEXT_LABEL_M, Strings.TEXT_LABEL_C, Strings.TEXT_LABEL_O};
			cbSaidaReal = new JComboBox();
			cbSaidaReal.setBounds(new Rectangle(320, 60, 95, 24));
			cbSaidaReal.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					
				}
			});
						
			for (int i = 0; i < itens.length; i++) {
				cbSaidaReal.addItem(itens[i]);
			}
		}
		return cbSaidaReal;
	}

	private JPanel getJPanelSaidas() {
		if (jPanelSaidas == null) {
			jPanelSaidas = new JPanel();
			jPanelSaidas.setLayout(null);
			jPanelSaidas.setBounds(new Rectangle(17, 295, 492, 116));
			jPanelSaidas.add(lbMetrologico, null);
			jPanelSaidas.add(lbSaidaMetrologico, null);
			jPanelSaidas.add(lbRNA, null);
			jPanelSaidas.add(lbReal, null);
			jPanelSaidas.add(lbSaidaRNA, null);
			jPanelSaidas.add(getCbSaidaReal(), null);
			jPanelSaidas.setBackground(Color.WHITE);
			jPanelSaidas.setBorder(BorderFactory.createLineBorder(Color.BLACK));
		}
		return jPanelSaidas;
	}

	private JPanel getJPanelEstatisticas() {
		if (jPanelEstatisticas == null) {
			jPanelEstatisticas = new JPanel();
			jPanelEstatisticas.setLayout(null);
			jPanelEstatisticas.setBounds(new Rectangle(17, 440, 662, 177));
			jPanelEstatisticas.add(lbEstatisticasMetrologico, null);
			jPanelEstatisticas.add(lbEstatisticasRNA, null);
//			jPanelEstatisticas.add(lbAcertos, null);
			jPanelEstatisticas.add(lbAcertosPercentMetro, null);
			jPanelEstatisticas.add(lbAcertosPercentRNA, null);
			jPanelEstatisticas.add(lbQtdAcertosMetro, null);
			jPanelEstatisticas.add(lbQtdAcertosRNA, null);
//			jPanelEstatisticas.add(lbErros, null);
			jPanelEstatisticas.add(lbErrosPercentMetro, null);
			jPanelEstatisticas.add(lbErrosPercentRNA, null);
			jPanelEstatisticas.add(lbQtdErrosMetro, null);
			jPanelEstatisticas.add(lbQtdErrosRNA, null);
			jPanelEstatisticas.setBackground(Color.WHITE);
			jPanelEstatisticas.setBorder(BorderFactory.createLineBorder(Color.BLACK));
			jPanelEstatisticas.add(getBtVerDetalhesMetro(), null);
			jPanelEstatisticas.add(getBtVerDetalhesRNA(), null);
		}
		return jPanelEstatisticas;
	}

	private JButton getBtDetalhes() {
		if (btDetalhes == null) {
			ImageIcon icon = UtilitariosGUI.criaIconDaImagem(Constantes.ICONE_DETAIL, 24, 24);
			String conteudo = Strings.TEXT_BT_DETALHES_ITEM;
			
			btDetalhes = new JButton();
			btDetalhes.setIcon(icon);
			btDetalhes.setToolTipText(conteudo);
			btDetalhes.setBounds(new Rectangle(630, 360, 40, 40));
			btDetalhes.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					if(getJList().isSelectionEmpty()){
						JOptionPane.showMessageDialog(null, Strings.TEXT_LABEL_SELECIONE_ITEM_LISTA,
								Strings.TEXT_LABEL_ATENCAO, JOptionPane.WARNING_MESSAGE);
						
						return;
					}	
					
					String selecionado = UtilitariosGUI.getNomeJList((String) getJList().getSelectedValue());
					
					DetalhesTelaEstatisticas detalhes = new DetalhesTelaEstatisticas();
					detalhes.executa(selecionado);
					
					detalhes.setVisible(true);
					detalhes.setState(JFrame.NORMAL);
				}
			});
		}
		return btDetalhes;
	}

	private JButton getBtMoverParaConsistencia() {
		if (btMoverParaConsistencia == null) {
			ImageIcon icon = UtilitariosGUI.criaIconDaImagem(Constantes.ICONE_COPY, 24, 24);
			String conteudo = Strings.TEXT_BT_MOVE_ITEM;
			
			btMoverParaConsistencia = new JButton();
			btMoverParaConsistencia.setIcon(icon);
			btMoverParaConsistencia.setToolTipText(conteudo);
			btMoverParaConsistencia.setBounds(new Rectangle(630, 300, 40, 40));
			btMoverParaConsistencia.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					if(getJList().isSelectionEmpty()){
						JOptionPane.showMessageDialog(null, Strings.TEXT_LABEL_SELECIONE_ITEM_LISTA, 
								Strings.TEXT_LABEL_ATENCAO, JOptionPane.WARNING_MESSAGE);
						return;
					}
					
					String nome = (String) getJList().getSelectedValue();
					
					Object[] options = {Strings.TEXT_OP_SIM, Strings.TEXT_OP_NAO};		
					int resp = JOptionPane.showOptionDialog(null, Strings.TEXT_BT_COPIAR_ITEM_MSG+ nome +Strings.TEXT_BT_COPIAR_ITEM_PARA_CONSISTENCIA,
							Strings.TITULO_JOPTION_PANE, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, 
							null, options, options[0]);
					
					if(resp == JOptionPane.YES_OPTION){
						int indexSelecionado = getJList().getSelectedIndex();
						
						File origemFileCSV = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_CSV, nome + Constantes.EXTENSAO_CSV);
						File destinoFileCSV = new File(Constantes.DIRETORIO_PERFIL_CONSISTENCIA_COLETA, nome + Constantes.EXTENSAO_CSV);
						
						File origemFileNorm = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_FLUXO_NORMALIZADO, nome + Constantes.EXTENSAO_TXT);
						File destinoFileNorm = new File(Constantes.DIRETORIO_PERFIL_CONSISTENCIA_FLUXO_NORMALIZADO, nome + Constantes.EXTENSAO_TXT);
												
						File origemFileOriginal = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_FLUXO_ORIGINAL, nome + Constantes.EXTENSAO_TXT);
						File destinoFileOriginal = new File(Constantes.DIRETORIO_PERFIL_CONSISTENCIA_FLUXO_ORIGINAL, nome + Constantes.EXTENSAO_TXT);
												
						File origemFileImgZoom = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_IMAGENS_ZOOM, nome + Constantes.EXTENSAO_JPG);
						File destinoFileImgZoom = new File(Constantes.DIRETORIO_PERFIL_CONSISTENCIA_IMAGENS_ZOOM, nome + Constantes.EXTENSAO_JPG);
												
						File origemFileImgPan1 = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_IMAGENS_PAN_1, nome + Constantes.EXTENSAO_JPG);
						File destinoFileImgPan1 = new File(Constantes.DIRETORIO_PERFIL_CONSISTENCIA_IMAGENS_PAN_1, nome + Constantes.EXTENSAO_JPG);
												
						File origemFileImgPan2 = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_IMAGENS_PAN_2, nome + Constantes.EXTENSAO_JPG);
						File destinoFileImgPan2 = new File(Constantes.DIRETORIO_PERFIL_CONSISTENCIA_IMAGENS_PAN_2, nome + Constantes.EXTENSAO_JPG);
												
						if(!OperacoesArquivos.COPIA_ARQUIVO(origemFileCSV, destinoFileCSV)){
							System.err.println("Could not copy file: " + origemFileCSV.getAbsolutePath());
						} if(!OperacoesArquivos.COPIA_ARQUIVO(origemFileNorm, destinoFileNorm)){
							System.err.println("Could not copy file: " + origemFileNorm.getAbsolutePath());
						} if(!OperacoesArquivos.COPIA_ARQUIVO(origemFileOriginal, destinoFileOriginal)){
							System.err.println("Could not copy file: " + origemFileOriginal.getAbsolutePath());
						} if(!OperacoesArquivos.COPIA_ARQUIVO(origemFileImgZoom, destinoFileImgZoom)){
							System.err.println("Could not copy file: " + origemFileImgZoom.getAbsolutePath());
						} if(!OperacoesArquivos.COPIA_ARQUIVO(origemFileImgPan1, destinoFileImgPan1)){
							System.err.println("Could not copy file: " + origemFileImgPan1.getAbsolutePath());
						} if(!OperacoesArquivos.COPIA_ARQUIVO(origemFileImgPan2, destinoFileImgPan2)){
							System.err.println("Could not copy file: " + origemFileImgPan2.getAbsolutePath());
						}
												
						removeItem(nome);
						
						if(model_todos != null){
							model_todos.removeElement(nome);
							
							if(getJList().isSelectionEmpty()){
								if(indexSelecionado == model_todos.getSize()){
									getJList().setSelectedIndex(indexSelecionado - 1);
								} else{
									getJList().setSelectedIndex(indexSelecionado);
								}
							}
							
							lbQtd.setText(String.valueOf(model_todos.size()));
						}
						
						if(!getRbTodos().isSelected()){
							if(model != null){
								model.removeElementAt(indexSelecionado);
								
								if(getJList().isSelectionEmpty()){
									if(indexSelecionado == model.getSize()){
										getJList().setSelectedIndex(indexSelecionado - 1);
									} else{
										getJList().setSelectedIndex(indexSelecionado);
									}
								}
	
								lbQtd.setText(String.valueOf(model.size()));
							}
						}
					}
				}
			});
		}
		return btMoverParaConsistencia;
	}
	
	private JButton getBtVerDetalhesMetro() {
		if (btVerDetalhesMetro == null) {
			btVerDetalhesMetro = new JButton();
			btVerDetalhesMetro.setBounds(new Rectangle(75, 132, 110, 25));
			btVerDetalhesMetro.setText(Strings.TITULO_DETALHES);
			btVerDetalhesMetro.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					if(listaAcertosMetro == null || listaErrosMetro == null){
						JOptionPane.showMessageDialog(null, Strings.TEXT_LABEL_GERAR_ESTATISTICAS_MSG,
								Strings.TEXT_LABEL_ATENCAO, JOptionPane.WARNING_MESSAGE);
						return;
					}
					
					DetalhesEstatisticasDados detalhes = new DetalhesEstatisticasDados();
					
					String[] arrayAcertos = new String[listaAcertosMetro.size()];
					String[] arrayErros = new String[listaErrosMetro.size()];
					
					listaAcertosMetro.toArray(arrayAcertos);
					listaErrosMetro.toArray(arrayErros);
										
					detalhes.executa(arrayAcertos, arrayErros);
					
					detalhes.setVisible(true);
					detalhes.setState(JFrame.NORMAL);
				}
			});
		}
		return btVerDetalhesMetro;
	}

	private JButton getBtVerDetalhesRNA() {
		if (btVerDetalhesRNA == null) {
			btVerDetalhesRNA = new JButton();
			btVerDetalhesRNA.setBounds(new Rectangle(355, 132, 110, 25));
			btVerDetalhesRNA.setText(Strings.TITULO_DETALHES);
			btVerDetalhesRNA.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					if(listaAcertosRNA == null || listaErrosRNA == null){
						JOptionPane.showMessageDialog(null, Strings.TEXT_LABEL_GERAR_ESTATISTICAS_MSG,
								Strings.TEXT_LABEL_ATENCAO, JOptionPane.WARNING_MESSAGE);
						return;
					}
					
					DetalhesEstatisticasDados detalhes = new DetalhesEstatisticasDados();
					
					String[] arrayAcertos = new String[listaAcertosRNA.size()];
					String[] arrayErros = new String[listaErrosRNA.size()];
					
					listaAcertosRNA.toArray(arrayAcertos);
					listaErrosRNA.toArray(arrayErros);
										
					detalhes.executa(arrayAcertos, arrayErros);
					
					detalhes.setVisible(true);
					detalhes.setState(JFrame.NORMAL);
				}
			});
		}
		return btVerDetalhesRNA;
	}

	private JCheckBox getChkIndeterminado() {
		if (chkIndeterminado == null) {
			chkIndeterminado = new JCheckBox();
			chkIndeterminado.setBounds(new Rectangle(790, 590, 149, 21));
			chkIndeterminado.setText(Strings.TEXT_BT_INDETERMINADO);
			chkIndeterminado.setBackground(Color.WHITE);
			chkIndeterminado.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					if(chkIndeterminado.isSelected()){
						if(getJList().isSelectionEmpty()){
							JOptionPane.showMessageDialog(null, Strings.TEXT_LABEL_SELECIONE_ITEM_LISTA, 
									Strings.TEXT_LABEL_ATENCAO, JOptionPane.WARNING_MESSAGE);
							chkIndeterminado.setSelected(false);
							return;
						}
						
						String nome = (String) getJList().getSelectedValue();
						
						Object[] options = {Strings.TEXT_OP_SIM, Strings.TEXT_OP_NAO};					
						int resp = JOptionPane.showOptionDialog(null, Strings.TEXT_BT_MOVER_ITEM_MSG + nome + Strings.TEXT_BT_COPIAR_ITEM_PARA_INDETERMINADOS, 
								Strings.TITULO_JOPTION_PANE, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, 
								null, options, options[0]);
						
						if(resp == JOptionPane.YES_OPTION){
							int indexSelecionado = getJList().getSelectedIndex();
							
							File origemFileCSV = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_CSV, nome + Constantes.EXTENSAO_CSV);
							File destinoFileCSV = new File(Constantes.DIRETORIO_PERFIL_INDETERMINADOS_CSV, nome + Constantes.EXTENSAO_CSV);
							
							File origemFileNorm = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_FLUXO_NORMALIZADO, nome + Constantes.EXTENSAO_TXT);
							File destinoFileNorm = new File(Constantes.DIRETORIO_PERFIL_INDETERMINADOS_FLUXO_NORMALIZADO, nome + Constantes.EXTENSAO_TXT);
													
							File origemFileOriginal = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_FLUXO_ORIGINAL, nome + Constantes.EXTENSAO_TXT);
							File destinoFileOriginal = new File(Constantes.DIRETORIO_PERFIL_INDETERMINADOS_FLUXO_ORIGINAL, nome + Constantes.EXTENSAO_TXT);
													
							File origemFileImgZoom = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_IMAGENS_ZOOM, nome + Constantes.EXTENSAO_JPG);
							File destinoFileImgZoom = new File(Constantes.DIRETORIO_PERFIL_INDETERMINADOS_IMAGENS_ZOOM, nome + Constantes.EXTENSAO_JPG);
													
							File origemFileImgPan1 = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_IMAGENS_PAN_1, nome + Constantes.EXTENSAO_JPG);
							File destinoFileImgPan1 = new File(Constantes.DIRETORIO_PERFIL_INDETERMINADOS_IMAGENS_PAN_1, nome + Constantes.EXTENSAO_JPG);
													
							File origemFileImgPan2 = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_IMAGENS_PAN_2, nome + Constantes.EXTENSAO_JPG);
							File destinoFileImgPan2 = new File(Constantes.DIRETORIO_PERFIL_INDETERMINADOS_IMAGENS_PAN_2, nome + Constantes.EXTENSAO_JPG);
							
							File origemFileMetro = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_METROLOGICO, nome + Constantes.EXTENSAO_TXT);
							File destinoFileMetro = new File(Constantes.DIRETORIO_PERFIL_INDETERMINADOS_METROLOGICO, nome + Constantes.EXTENSAO_TXT);
													
							File origemFileRNA = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_RNA, nome + Constantes.EXTENSAO_TXT);
							File destinoFileRNA = new File(Constantes.DIRETORIO_PERFIL_INDETERMINADOS_RNA, nome + Constantes.EXTENSAO_TXT);
													
							File origemFileReal = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_REAL, nome + Constantes.EXTENSAO_TXT);
							File destinoFileReal = new File(Constantes.DIRETORIO_PERFIL_INDETERMINADOS_REAL, nome + Constantes.EXTENSAO_TXT);
							
							
							if(!OperacoesArquivos.COPIA_ARQUIVO(origemFileCSV, destinoFileCSV)){
								System.err.println("Could not copy file: " + origemFileCSV.getAbsolutePath());
							} if(!OperacoesArquivos.COPIA_ARQUIVO(origemFileNorm, destinoFileNorm)){
								System.err.println("Could not copy file: " + origemFileNorm.getAbsolutePath());
							} if(!OperacoesArquivos.COPIA_ARQUIVO(origemFileOriginal, destinoFileOriginal)){
								System.err.println("Could not copy file: " + origemFileOriginal.getAbsolutePath());
							} if(!OperacoesArquivos.COPIA_ARQUIVO(origemFileImgZoom, destinoFileImgZoom)){
								System.err.println("Could not copy file: " + origemFileImgZoom.getAbsolutePath());
							} if(!OperacoesArquivos.COPIA_ARQUIVO(origemFileImgPan1, destinoFileImgPan1)){
								System.err.println("Could not copy file: " + origemFileImgPan1.getAbsolutePath());
							} if(!OperacoesArquivos.COPIA_ARQUIVO(origemFileImgPan2, destinoFileImgPan2)){
								System.err.println("Could not copy file: " + origemFileImgPan2.getAbsolutePath());
							} if(!OperacoesArquivos.COPIA_ARQUIVO(origemFileMetro, destinoFileMetro)){
								System.err.println("Could not copy file: " + origemFileMetro.getAbsolutePath());
							} if(!OperacoesArquivos.COPIA_ARQUIVO(origemFileRNA, destinoFileRNA)){
								System.err.println("Could not copy file: " + origemFileRNA.getAbsolutePath());
							} if(!OperacoesArquivos.COPIA_ARQUIVO(origemFileReal, destinoFileReal)){
								System.err.println("Could not copy file: " + origemFileReal.getAbsolutePath());
							}
													
							removeItem(nome);
							
							if(model_todos != null){
								model_todos.removeElement(nome);
								
								if(getJList().isSelectionEmpty()){
									if(indexSelecionado == model_todos.getSize()){
										getJList().setSelectedIndex(indexSelecionado - 1);
									} else{
										getJList().setSelectedIndex(indexSelecionado);
									}
								}
								
								lbQtd.setText(String.valueOf(model_todos.size()));
							}
							
							if(!getRbTodos().isSelected()){
								if(model != null){
									model.removeElementAt(indexSelecionado);
									
									if(getJList().isSelectionEmpty()){
										if(indexSelecionado == model.getSize()){
											getJList().setSelectedIndex(indexSelecionado - 1);
										} else{
											getJList().setSelectedIndex(indexSelecionado);
										}
									}
		
									lbQtd.setText(String.valueOf(model.size()));
								}
							}
						}
						
						chkIndeterminado.setSelected(false);
					}
				}
			});
		}
		return chkIndeterminado;
	}
	
	private void atualizarNomes(){
		
		String[] listDir = OperacoesArquivos.criaListFromDir(
				Constantes.DIRETORIO_PERFIL_ESTATISTICA_REAL, Constantes.EXTENSAO_TXT);
		
		for (String selecionado : listDir) {
			File fileSelecionado = new File(Constantes.DIRETORIO_PERFIL_ESTATISTICA_REAL, selecionado + Constantes.EXTENSAO_TXT);
			List<String> conteudo = OperacoesArquivos.lerTxt(fileSelecionado.getAbsolutePath());
			
			int saidaIdeal = Integer.parseInt(conteudo.get(0));
			
			OperacoesArquivos.RENOMEIA_ARQUIVOS(
					selecionado, saidaIdeal, Constantes.ESTATISTICAS);
		}						
	}
}

